home *** CD-ROM | disk | FTP | other *** search
/ Sprite 1984 - 1993 / Sprite 1984 - 1993.iso / src / kernel / rpc / rpcTrace.h < prev    next >
C/C++ Source or Header  |  1992-12-18  |  3KB  |  140 lines

  1. /*
  2.  * rpcTrace.h --
  3.  *
  4.  *    The Trace utilities are used to keep a circular trace of packets
  5.  *    sent and received through the RPC protocol.
  6.  *
  7.  * Copyright (C) 1985 Regents of the University of California
  8.  * All rights reserved.
  9.  *
  10.  *
  11.  * $Header: /cdrom/src/kernel/Cvsroot/kernel/rpc/rpcTrace.h,v 9.2 90/10/02 16:30:39 mgbaker Exp $ SPRITE (Berkeley)
  12.  */
  13.  
  14. #ifndef _RPCTRACE
  15. #define _RPCTRACE
  16.  
  17. #include <spriteTime.h>
  18. #ifdef KERNEL
  19. #include <rpcTypes.h>
  20. #include <rpcPacket.h>
  21. #include <trace.h>
  22. #include <sync.h>
  23. #else
  24. #include <kernel/rpcTypes.h>
  25. #include <kernel/rpcPacket.h>
  26. #include <kernel/trace.h>
  27. #include <kernel/sync.h>
  28. #endif /* KERNEL */
  29.  
  30. /*
  31.  * RPC_TRACE_LEN determines how big the circular buffer of trace records is.
  32.  */
  33. #define RPC_TRACE_LEN    100
  34.  
  35. /*
  36.  * Converting to use general trace routines.
  37.  */
  38. #define RpcTrace(rpcHdrPtr, type, comment) \
  39.     Trace_Insert(rpcTraceHdrPtr, type, (ClientData) rpcHdrPtr)
  40.  
  41. /*
  42.  * Macros to make the trace calls take up less room and be easier
  43.  * to change.
  44.  */
  45. #ifndef CLEAN
  46. #define RPC_NIL_TRACE(type, comment) \
  47.     if (rpc_Tracing) { \
  48.     RpcTrace((Address)NIL, type, comment); \
  49.     }
  50. #define RPC_TRACE(rpcHdrPtr, type, comment) \
  51.     if (rpc_Tracing) { \
  52.     RpcTrace(rpcHdrPtr, type, comment); \
  53.     }
  54. #else
  55. #define RPC_NIL_TRACE(type, comment)
  56. #define RPC_TRACE(rpcHdrPtr, type, comment)
  57. #endif
  58.  
  59. /*
  60.  * This is the trace record written to the trace file by Rpc_DumpTrace
  61.  */
  62. typedef struct Rpc_Trace {
  63.     RpcHdr rpcHdr;    /* An optional copy of the rpc Header of the packet */
  64.     Time   time;    /* The time at which the trace record was made */
  65.     int       type;    /* A type field which is interpreted by the print
  66.              * routine.  Defined below */
  67. } Rpc_Trace;
  68.  
  69. /*
  70.  * The original header on the trace file.
  71.  */
  72. typedef struct Rpc_TraceHdr1 {
  73.     int version;        /* == 1 */
  74.     Time rpcDeltaTime;
  75.     int numRecords;
  76. } Rpc_TraceHdr1;
  77.  
  78. /*
  79.  * A new header that also includes time stamps
  80.  */
  81. typedef struct Rpc_TraceHdr2 {
  82.     int version;        /* == 2 */
  83.     Time rpcDeltaTime;
  84.     int numRecords;
  85.     int emptyStampMicroseconds;
  86.     int fullStampMicroseconds;
  87. } Rpc_TraceHdr2;
  88.  
  89. typedef Rpc_TraceHdr2 Rpc_TraceFileHdr;
  90.  
  91. /* #define RPC_TRACE_VERSION    1     Jan 29 '86 */
  92. /* #define RPC_TRACE_VERSION    2     Jan 31 '86 */
  93. #define RPC_TRACE_VERSION    3     /* Nov 19 '86 */
  94.  
  95. /*
  96.  * Tracing related defines.  These are values for the second
  97.  * parameter of RpcTrace.  They get placed in the type field of an
  98.  * Rpc_Trace struct.
  99.  */
  100. #define RPC_INPUT    1
  101. #define RPC_OUTPUT    2
  102. #define RPC_CLIENT_A    3
  103. #define RPC_CLIENT_B    4
  104. #define RPC_CLIENT_C    5
  105. #define RPC_CLIENT_D    6
  106. #define RPC_CLIENT_E    7
  107. #define RPC_CLIENT_F    8
  108. #define RPC_CLIENT_a    103
  109. #define RPC_CLIENT_b    104
  110. #define RPC_CLIENT_c    105
  111. #define RPC_CLIENT_d    106
  112. #define RPC_CLIENT_e    107
  113. #define RPC_CLIENT_f    108
  114. #define RPC_CLIENT_OUT    9
  115. #define RPC_SERVER_A    10
  116. #define RPC_SERVER_B    11
  117. #define RPC_SERVER_C    12
  118. #define RPC_SERVER_D    13
  119. #define RPC_SERVER_E    14
  120. #define RPC_SERVER_F    15
  121. #define RPC_SERVER_a    110
  122. #define RPC_SERVER_b    111
  123. #define RPC_SERVER_c    112
  124. #define RPC_SERVER_d    113
  125. #define RPC_SERVER_e    114
  126. #define RPC_SERVER_f    115
  127. #define RPC_SERVER_OUT    16
  128.  
  129. #define    RPC_ETHER_OUT    17
  130.  
  131. extern Trace_Header *rpcTraceHdrPtr;
  132. extern Boolean rpc_Tracing;
  133.  
  134. /*
  135.  * Cached results of tests.
  136.  */
  137. extern Time rpcDeltaTime;
  138.  
  139. #endif /* _RPCTRACE */
  140.